package com.laiqilin.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Map;

public class JwtUtil {

	private static final String SECRET = "HZIT"; // 密钥，应该在实际项目中更加保密

	/**
	 * 创建JWT token
	 *
	 * @param claims 载荷部分，包含用户的相关信息
	 * @return 返回生成的JWT token
	 */
	public static String createToken(Map<String, Object> claims) {
		// 使用HS512算法进行签名，并返回生成的token
		String token = Jwts.builder().setClaims(claims)
				.signWith(SignatureAlgorithm.HS512, SECRET)  // 使用密钥进行签名
				.compact(); // 返回生成的token
		return token;
	}

	/**
	 * 解析JWT token并返回其Claims
	 *
	 * @param token 要解析的JWT token
	 * @return 返回解析后的Claims
	 */
	public static Claims parseToken(String token) {
		// 使用密钥解析token，获取claims部分
		return Jwts.parser().setSigningKey(SECRET)  // 设置签名密钥
				.parseClaimsJws(token)  // 解析JWT token
				.getBody();  // 获取claims部分
	}
}
